package com.fc.common.util;

import java.io.IOException;
import java.util.Properties;

/**
 * <p>Title: Config</p>
 * <p>Description: </p>
 * <p>Company: </p> 
 * @author wanghw
 * @date 2016年3月20日 
 */
public class Config {
	
	public static final String CHARSET = "UTF-8";
	
	public static final String ERROR_CODE = "1";
	
	public static final String ERROR_MSG = "系统异常";
	
	public static final String FORMAT_KEY = "format";
	
	private static Properties ConfigProps;
	
	/**
	 * 请求字段为空错误码
	 */
	public static final String ERROR_EMPTY_CODE = "100";
	/**
	 * 是否禁用缓存
	 */
	public static boolean CACHE_DISABLED = false;
	
	public static Properties getLogProperties(){
		
		return null;
	}
	
	
	/**
	 * config.properties
	 * @param key
	 * @return
	 */
	public static String getConfig(String key){
		return getConfig(key,null);
	}
	
	/**
	 * config.properties
	 * @param key
	 * @param defaultValue
	 * @return
	 */
	public static String getConfig(String key, String defaultValue){
//		System.out.println("&&&&&"+Config.class.getClassLoader().getResource("/").getPath());
		if(ConfigProps==null){
			loadConfigProps();
		}
		return ConfigProps.getProperty(key, defaultValue);
	}
	
	//加载ConfigProps
	private static synchronized void loadConfigProps(){
		try {
				if(ConfigProps==null){
					//多个环境配置会有多个 配置文件。指定system.properties 设置配置文件路径进行变更 laiqhe
					String configFilepath=PropertiesUtils.loadProperties("/system.properties").getProperty("config.file");
					ConfigProps = PropertiesUtils.loadProperties(configFilepath.split(","));
				}
			} catch (IOException e) {
				e.printStackTrace();
		}	
	}
	
	public static Properties getProperties(){
		if(ConfigProps==null){
			loadConfigProps();
		}
		return ConfigProps;
	}
	
	//刷新 ConfigProps
	private static synchronized void reloadConfigProps(){
		try {
			//多个环境配置会有多个 配置文件。指定system.properties 设置配置文件路径进行变更 laiqhe
			String configFilepath=PropertiesUtils.loadProperties("/system.properties").getProperty("config.file");
			ConfigProps = PropertiesUtils.loadProperties("/"+configFilepath);
		}catch (IOException e) {
				e.printStackTrace();
		}		
	}
}
